import { login, getUserInfo, getUserDetailById } from '@/api/user'
import { getToken, setToken, removeToken, setTime } from '@/utils/auth'

// 存放token
const state = {
//   token: localStorage.getItem('usertoken')
  token: getToken(),
  userlist: {}
}
// 设置token，修改token
const mutations = {
  setToken(state, data) {
    // localStorage.setItem('usertoken', data)
    state.token = data
    setToken(data)
  },
  //   删除token
  removeToken(state) {
    state.token = null
    removeToken()
  },

  //   修改用户基本信息
  userInfo(state, data) {
    // localStorage.setItem('usertoken', data)
    // state.token = data
    state.userlist = { ...data }
    console.log(state.userlist)
  },
  //   删除用户信息
  removeuserInfo(state) {
    state.userlist = {}
  }
}
// 异步登录
// 调用api接口，data是表单的数据
// res.data.data后台获取到token
// 通过store.commit('setToken', token)修改token的值
const actions = {
  async login(store, data) {
    //   成功请求
    try {
      const res = await login(data)
      console.log(res)
      // const token = res.data.data
      // console.log(token)
      store.commit('setToken', res)
      setTime()
      // console.log(store.state.token)
    } catch (error) {
      // 错误请求
      console.log('错误请求')
      console.log(error)
    }
  },
  //   调用用户基本数据接口
  async getUserInfo(store) {
    const res = await getUserInfo()
    // 根据用户的id拿到用户更多数据
    const detail = await getUserDetailById(res.userId)
    // 将两个对象进行展开语法的拼接
    const data = { ...res, ...detail }
    console.log(data)
    // 将新的数据，修改到state中
    store.commit('userInfo', data)
  },
  // 移除token和用户信息
  logout(store) {
    store.commit('removeToken')
    store.commit('removeuserInfo')
  }
}

export default {
  namespaced: true,
  mutations,
  actions,
  state
}
